package com.hdsx.restful.glzt.structure.jpjg.rest;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Service;

import com.hdsx.restful.glzt.structure.jpjg.bean.Jpjg;
import com.hdsx.restful.glzt.structure.jpjg.service.JpjgServer;
import com.hdsx.restful.glzt.structure.ql.bean.StatisticalResult;
import com.hdsx.restful.util.Dao;
import com.hdsx.restful.util.EasyUI;


// TODO: Auto-generated Javadoc
/**
 * jpjg服务
 */
@Path("/jpjg")
@Service
public class JpjgRestServer {

	/** The jpjg server. */
	@Resource(name = "jpjgServerImpl")
	private JpjgServer server;

	@GET
	@Path("/getListBylxdh")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Jpjg> getListBylxdh(@QueryParam("jgmc") String jgmc,@QueryParam("page") int page,@QueryParam("rows") int rows){
		EasyUI<Jpjg> easyUI=new EasyUI<Jpjg>(page,rows);
		int count =server.queryJpjgCountBylxdh(jgmc);
		List<Jpjg> qlListBylxdh = server.getListBylxdh(jgmc,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(qlListBylxdh);
		return easyUI;
	}
	
	@GET
	@Path("/getListByXzqhbm")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Jpjg> getListByXzqhbm(@QueryParam("xzqhbm") String xzqhbm,@QueryParam("jyyhmc") String jyyhmc,@QueryParam("page") int page,@QueryParam("rows") int rows){
		EasyUI<Jpjg> easyUI=new EasyUI<Jpjg>(page,rows);
		int count =server.queryJpjgCountXzqhbm(xzqhbm,jyyhmc);
		List<Jpjg> qlListByXzqhbm = server.getListByXzqhbm(xzqhbm,jyyhmc,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(qlListByXzqhbm);
		return easyUI;
	}
	
	/**
	 * http://192.168.0.137:8080/restful/rest/jpjg/list?jgmc=机构名称&xzqhbm=610824&page=0&rows=10
	 * @param xzqhbm
	 * @param page
	 * @param rows
	 * @return
	 */
	@GET
	@Path("/list")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Jpjg> getList(@QueryParam("name") String name,@QueryParam("xzqhbm") String xzqhbm,@QueryParam("page") int page,@QueryParam("rows") int rows){
		EasyUI<Jpjg> easyUI=new EasyUI<Jpjg>(page,rows);
		int count =server.queryJpjgCount(name,xzqhbm);
		List<Jpjg> qlListBylxdh = server.getList(xzqhbm,name,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(qlListBylxdh);
		return easyUI;
	}
	
	
	@GET
	@Path("/getByJyyhxkzbh")
	@Produces(MediaType.APPLICATION_JSON)
	public Jpjg getByJyyhxkzbh(@QueryParam("jyyhxkzbh") String jyyhxkzbh){
		Jpjg ql = server.getOne(jyyhxkzbh);
		return ql;
	}
	
	/**
	 * 根据id得到jpjg
	 * 
	 * @param id
	 *            唯一标识
	 * @return
	 */
	@GET
	@Path("/{id}")
	@Produces(MediaType.APPLICATION_JSON)
	public Jpjg getById(@PathParam("id") String id) {
		Jpjg jpjg = server.getById(id);
		return jpjg;
	}

	/**
	 * 根据id删除jpjg
	 * 
	 * @param id
	 *            唯一标识
	 * @return 若成功返回true，否则返回false
	 */
	@DELETE
	@Path("/{id}")
	@Produces(MediaType.APPLICATION_JSON)
	public boolean deleteById(@PathParam("id") String id) {
		return server.deleteById(id);
	}

	/**
	 * 更新jpjg
	 * 
	 * @param jpjg
	 *            待更新的jpjg
	 * @return 若成功返回true，否则返回false
	 */
	@POST
	@Path("/update")
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	public boolean updatejpjg(Jpjg jpjg) {

		return server.updateJpjg(jpjg);
	}

	/**
	 * 添加jpjg
	 * 
	 * @param jpjg
	 *            待添加的jpjg
	 * @return 若成功返回true，否则返回false
	 */
	@PUT
	@Path("/add")
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	public boolean addjpjg(Jpjg jpjg) {
		return server.addJpjg(jpjg);
	}
	

//	/**
//	 *  多边形查询（框选）
//	 * @param wkt
//	 * @return
//	 */
//	@GET
//	@Path("/wkt")
//	@Produces(MediaType.APPLICATION_JSON)
//	public List<Jpjg> queryByDbx(@QueryParam("wkt") String wkt){
//		return jpjgServer.queryByDbx(wkt);
//	}
	
	@GET
	@Path("/info")
	@Produces(MediaType.APPLICATION_JSON)
	public List<Dao>  getShapeById(@QueryParam("id") String id) {
		List<Dao> list  = server.getShapeById(id);
		return list;
	}
	@GET
	@Path("/tjjg")
	@Produces(MediaType.APPLICATION_JSON)
	public StatisticalResult getStatisticalResult(@QueryParam("szlx") String szlx,@QueryParam("xzqhbm") String xzqhbm,@QueryParam("type") String type){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("lxbm", szlx);
		map.put("xzqhbm", xzqhbm);
		map.put("type", type);
		StatisticalResult tjjg = server.countByParameter(map);
		return tjjg;
	}
	
	@GET
	@Path("/auto")
	@Produces(MediaType.APPLICATION_JSON)
	public List<String> pienext(@QueryParam("name")String name){
		return server.selectName(name);
	}

}
